#ifndef _SDK_CAC_MODEL_H_
#define _SDK_CAC_MODEL_H_


#include "sdk_common.h"
    //0x01-开关 0x02-温度 0x03-模式 0x04-风速 0x05-防冻保护 0x06-(预留) 0x07-湿度(预留) 0x08-洁度(预留) 0x09-风向
typedef enum{
    enum_CAC_ctl_onoff=1,
    enum_CAC_ctl_temp=2,
    enum_CAC_ctl_mode=3,
    enum_CAC_ctl_windspeed=4,
    enum_CAC_ctl_antifreeze=5,
    enum_CAC_ctl_huminity=7,
    enum_CAC_ctl_clearness=8,
    enum_CAC_ctl_winddirection=9
}ENUM_CAC_CTL_TYPE;






/*
备注：
    中央空调没有自动模式。
内机只有4种模式：制热 制冷 送风 除湿。
内机只有4中风速：自动 低速 中速 高速。
*/

typedef struct{
    uint8_t devType; //新风/地暖/空调外机/空调内机
    uint8_t onoff;//0-off 1-on
    uint8_t tempInRoom;//温度(室温) 1~15代表16~30度
    union gear
    {
       uint8_t windspeed;//0-5,0-自动（内机）  1-高速 2-中速 3-中高速 4-低速 5-中低速
       uint8_t newFanGear;//0-5,0-自动 1-换气 2-排风 3-智能 4-强劲 5-省电
    }gear_t;
    //空调机模式:1-10,0-无效 1-设定制冷 2-设定除湿 3-设定清爽 4-设定送风 5-设定自动除湿 6-设定贴心睡眠 8-设定制热 9-设定地暖 10-设定强热（地暖和制热同时开启）
    //新风机模式:0-5, 0-自动 1-换气 2-排风 3-智能 4-强劲 5-省电
    uint8_t mode;
    uint8_t error;//0-no error
    uint8_t onoffline;//1-online 0-offline

    //---------新风/地暖/空调外机-----------
    union temp_pm2p5
    {
        uint8_t temp;//1~15代表16~30度 （用于地暖设备上报）
        uint8_t pm2p5;//PM2.5（新风机）
    }temp_pm2p5_t;

    union voc_antifreeze
    {
        uint8_t voc;
        uint8_t antifreeze;//0-off 1-on
    }voc_antifreeze_t;//新风机有PM2.5和VOC；地暖有传感器温度和防冻开关，没有风速。要根据设备类型解析数据。
    
    //--------------空调内机-----------
    uint8_t temp;//设置温度（1~15代表16~30度）
    /*
        内机风向：
        0 无导风板（上报）
        1 小角度
        2 中角度
        4 大角度
        7 摆动   
    */
    uint8_t direction;//风向

}O_CAC_STATUS,*P_CAC_STATUS;


typedef union sdk_model_CAC_data_t
{
    uint8_t devType; //新风/地暖/空调外机/空调内机
    uint8_t onoff;//0-close 1-open
    uint8_t temp;//16-30
    //空调机模式:1-10,0-无效 1-设定制冷 2-设定除湿 3-设定清爽 4-设定送风 5-设定自动除湿 6-设定贴心睡眠 8-设定制热 9-设定地暖 10-设定强热（地暖和制热同时开启）
    //新风机模式:0-5, 0-自动 1-换气 2-排风 3-智能 4-强劲 5-省电
    uint8_t mode;
    uint8_t windspeed;//0-自动(内机) 1-高速 2-中速 3-中高速 4-低速 5-中低速
    uint8_t newFanGear;//0-5,0-自动 1-换气 2-排风 3-智能 4-强劲 5-省电
    uint8_t antiFreeze;//0-close 1-open
    uint8_t huminity;
    uint8_t clearness;
    uint8_t winddirection;//内机风向:1-小角度 2-中角度 4-大角度 7-摆动
}O_CAC_DATA,*P_CAC_DATA;



#define SDK_CAC_CTL_ATTRID   0x104D


extern int sdk_model_CAC_ctl(ENUM_CAC_CTL_TYPE type,uint16_t addr,uint16_t subaddr, P_CAC_DATA data);


#endif

